package com.telit.dispose.feign.impl;

import com.telit.common.dto.SysUserRolePageDto;
import com.telit.common.entity.SysRole;
import com.telit.common.enums.ResultCode;
import com.telit.common.vo.user.Result;
import com.telit.common.vo.user.SysUserInfoVo;
import com.telit.common.vo.user.SysUserPageDto;
import com.telit.common.vo.user.SysUserShortVo;
import com.telit.dispose.feign.UpmsFeignClient;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.util.List;


/**
 * @Auther amy
 * @Describe
 */
@Component
@Slf4j
public class UpmsFeignClientFallBack implements UpmsFeignClient {
    @Setter
    private Throwable cause;

    @Override
    public Result getUserDetail(Long id) {
        log.error("feign 查询用户详细信息:{}",cause);
        return new Result<>(ResultCode.SERVER_FEIGN_ERROR.getCode(),false,"查询用户详情失败");
    }

    @Override
    public Result<List<SysUserShortVo>> getListForRole(SysUserRolePageDto sysUserRolePageDto) {
        log.error("feign 无分页查询用户所有详情失败:{}",cause);
        return new Result<>(ResultCode.SERVER_FEIGN_ERROR.getCode(),false,"无分页查询用户信息失败");
    }

    @Override
    public Result<Long> getCountForRole(SysUserRolePageDto sysUserRolePageDto) {
        log.error("feign 依据角色及组合条件查询用户数:{}",cause);
        return new Result<>(ResultCode.SERVER_FEIGN_ERROR.getCode(),false,"依据角色及组合条件查询用户数");
    }

    @Override
    public Result<List<SysUserShortVo>> queryUserListByIds(List<Long> ids) {
        log.error("feign 批量查询用户详情失败:{}",cause);
        return new Result<>(ResultCode.SERVER_FEIGN_ERROR.getCode(),false,"批量查询用户详情失败");
    }

    @Override
    public Result<List<SysUserInfoVo>> queryUserInfoByIds(List<Long> ids) {
        log.error("feign 批量查询用户详情失败:{}",cause);
        return new Result<>(ResultCode.SERVER_FEIGN_ERROR.getCode(),false,"批量查询用户详情失败");
    }

    @Override
    public Result<List<SysUserShortVo>> getListForRoleAndDistrictCode(SysUserRolePageDto sysUserRolePageDto) {
        log.error("feign 通过行政区划及以上查询用户列表失败:{}", cause);
        return new Result<>(ResultCode.SERVER_FEIGN_ERROR.getCode(), false, "通过行政区划及以上查询用户列表失败");
    }

    @Override
    public Result<List<SysRole>> queryRoleByUserId(Long userId) {
        log.error("feign 通过用户ID查询角色信息失败:{}", cause);
        return new Result<>(ResultCode.SERVER_FEIGN_ERROR.getCode(), false, "通过用户ID查询角色信息失败");
    }

    @Override
    public Result queryDistrictList(String parentCode) {
        log.error("feign 依据上级行政区划编码查询下级行政区划列表:{}", cause);
        return new Result<>(ResultCode.SERVER_FEIGN_ERROR.getCode(), false, "依据上级行政区划编码查询下级行政区划列表失败");
    }

    @Override
    public Result queryDistrictTree(String code) {
        log.error("feign 查询当前用户管辖范围的行政区划树:{}", cause);
        return new Result<>(ResultCode.SERVER_FEIGN_ERROR.getCode(), false, "查询当前用户管辖范围的行政区划树");
    }

    /**
     * 查询当前用户管辖范围的行政区划树(控层级、数量过多)
     *
     * @return Result Obj
     */
    @Override
    public Result qryDistrictTree() {
        log.error("feign 查询当前用户的行政区划树:{}", cause);
        return new Result<>(ResultCode.SERVER_FEIGN_ERROR.getCode(), false, "查询当前用户的行政区划树");
    }

    /**
     * 根据父类code获取所有子行政区树
     *
     * @param district 父类code
     *
     * @return Result Obj
     */
    @Override
    public Result qryAllByParentCode(String district) {
        log.error("feign 根据父类code获取所有子行政区树:{}", cause);
        return new Result<>(ResultCode.SERVER_FEIGN_ERROR.getCode(), false, "根据父类code获取所有子行政区树");
    }

    /**
     * 依据组合条件查询全部用户列表结果
     *
     * @param sysUserPageDto SysUserPageDto
     *
     * @return 全部用户列表
     */
    @Override
    public Result<List<SysUserShortVo>> getListForCustomer(SysUserPageDto sysUserPageDto) {
        log.error("feign getListForCustomer:{}", cause);
        return new Result<>(ResultCode.SERVER_FEIGN_ERROR.getCode(), false, "getListForCustomer");
    }


    @Override
    public Result getUserLocation(Long userId) {
        return new Result<>(ResultCode.SERVER_FEIGN_ERROR.getCode(), false, "getUserLocation");
    }

}
